/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.loja.model.entity.estoque;

import br.com.loja.model.entity.Switchable;
import javax.persistence.Cacheable;
import br.com.loja.model.entity.compra.ItemCompra;
import br.com.loja.model.entity.produto.Produto;
import br.com.loja.view.swing.model.FormField;
import br.com.loja.view.swing.model.IgnoreTableModel;
import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

/**
 *
 * @author David Luiz
 */
@Entity
@Cacheable(true)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, include = "all", region = "itemEstoque")
@Table(name = "item_estoque")
public class ItemEstoque implements Switchable, Serializable {

    public static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long idItemEstoque;
    @OneToOne
    private Produto produto;
    private Integer quantidadeAtual;
    private Integer quantidadeMinima;
    private String localizacao;
    @OneToOne
    private ItemCompra ultimoItemCompra;
    private Boolean pedidoAberto;
    private Boolean emFalta;

    @FormField(visible = false)
    @IgnoreTableModel
    private boolean dead;

    public ItemEstoque() {
    }

    public Long getIdItemEstoque() {
        return this.idItemEstoque;
    }

    public void setIdItemEstoque(Long idItemEstoque) {
        this.idItemEstoque = idItemEstoque;
    }

    public Integer getQuantidadeAtual() {
        return this.quantidadeAtual;
    }

    public void setQuantidadeAtual(Integer quantidadeAtual) {
        this.quantidadeAtual = quantidadeAtual;
    }

    public Integer getQuantidadeMinima() {
        return this.quantidadeMinima;
    }

    public void setQuantidadeMinima(Integer quantidadeMinima) {
        this.quantidadeMinima = quantidadeMinima;
    }

    public String getLocalizacao() {
        return this.localizacao;
    }

    public void setLocalizacao(String localizacao) {
        this.localizacao = localizacao;
    }

    public Produto getProduto() {
        return this.produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public void setUltimoItemCompra(ItemCompra itemCompra) {
        this.ultimoItemCompra = itemCompra;
    }

    public ItemCompra getUltimoItemCompra() {
        return this.ultimoItemCompra;
    }

    public Boolean isEmFalta() {
        return this.emFalta;
    }

    public void setEmFalta(Boolean emFalta) {
        this.emFalta = emFalta;
    }

    public Boolean isPedidoAberto() {
        return this.pedidoAberto;
    }

    public void setPedidoAberto(Boolean pedidoAberto) {
        this.pedidoAberto = pedidoAberto;

    }

    @Override
    public boolean isDead() {
        return dead;
    }

    @Override
    public void setDead(boolean dead) {
        this.dead = dead;
    }

}
